/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejemplogestorcadenas;

import java.util.Scanner;

/**
 *
 * @author a2pc06
 */
public class InterfaceGestorCadenas
{

    boolean continuar = true;
    private GestorCadenas gestor;

    public InterfaceGestorCadenas()
    {
        int opcion = 0;
        gestor = new GestorCadenas();
        do
        {
            mostrarMenu();
            opcion = seleccionarOpcion();
            ejecutarTarea(opcion);
        // ejecutarTarea(seleccionarOpcion());
        } while (continuar);
    }

    private void SiguienteCoincidencia()
    {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    private void buscarTexto()
    {
        gestor.buscar();
    }

    private void cargarArchivo()
    {
        gestor.cargarArchivo(introducirNombre());
    }

    private void guardarArchivo()
    {
        gestor.guardarArchivo(introducirNombre());
    }

    private void mostrarArchivo()
    {
        gestor.mostrarArchivo();
    }

    private void mostrarMenu()
    {
        System.out.println("**************************");
        System.out.println("* 0 - Salir");
        System.out.println("* 1 - Cargar Archivo");
        System.out.println("* 2 - Guardar Archivo");
        System.out.println("* 3 - Mostrar Archivo");
        System.out.println("* 4 - Buscar texto");
        System.out.println("* 5 - Remplazar texto");
        System.out.println("* 6 - Buscar siguiente coincidencia");
        System.out.println("**************************");
    }

    private void reemplazarTexto()
    {
        gestor.reemplazarTexto();
    }

    private void ejecutarTarea(int opcion)
    {
        switch (opcion)
        {
            case 0:
                continuar = false;
                break;
            case 1:
                cargarArchivo();
                break;
            case 2:
                guardarArchivo();
                break;
            case 3:
                mostrarArchivo();
                break;
            case 4:
                buscarTexto();
                break;
            case 5:
                reemplazarTexto();
                break;
            case 6:
                SiguienteCoincidencia();
                break;
            default:
                // codigo
                break;
        }
    }

    private int seleccionarOpcion()
    {
        int opcion = -1;
        Scanner lector = new Scanner(System.in);
        lector.useDelimiter("\n");
        do
        {
            System.out.print("Por favor, introduzca una opcion: ");
            if (lector.hasNextInt())
            {
                opcion = lector.nextInt();
                if (opcion < 0 || opcion > 6)
                {
                    opcion = -1;
                }
            } else
            {
                lector.next();
            }
        } while (opcion == -1);
        return opcion;
    }

    private String introducirNombre()
    {
        String nuevaCadena = "";
        System.out.println("Introduzca el nombre del archivo.");
        Scanner lector = new Scanner(System.in);
        if (lector.hasNextLine())
        {
            nuevaCadena = lector.nextLine();

        } else
        {
            introducirNombre();
        }
        return nuevaCadena;
    }
}
